package com.atguigu.day5;

public class CourseNote {
    /*
     *JMM(Java内存模型Java Memory Model，简称JMM)是一种抽象的概念。它描述的是一组规则或规则，
     * 通过这组规范定义了程序中各个变量的访问方式。为了屏蔽系统和硬件的差异，让一套代码在不同平台下能到达相同的访问结果
     *
     *
     * 由于JVM运行程序的实体是线程，而每个线程创建时JVM都会为其创建一个工作内存（有些地方称为栈空间），
     * 工作内存是每个线程的私有数据区域，而Java内存模型中规定所有变量都存储在主内存，主内存是共享内存区域，所有线程都可以访问，
     * 但线程对变量的操作（读取赋值等）必须在本线程自己的工作内存中进行，首先要将变量从主内存拷贝到线程自己的工作空间，然后对变量进行操作，
     * 操作完成后写回主内存，不能直接操作主内存中的变量，各个线程中的工作内存中存储着主内存中的变量副本拷贝，因此不同的线程间无法访问对方的工作内存，
     * 线程间的通信（传值）必须通过主内存来完成
     *
     *
     *
     *
     *
     *
     *
     *JMM关于同步的规定：
     * 1、线程解锁前，共享变量的值刷新回主内存
     * 2、线程加锁前，必须读取主内存的最新值到自己的工作内存
     * 3、加锁解锁是同一把锁
     *
     *  */
}
